package com.yichat.micro.msghttpservice.common.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * fastjson工具类，替代jsonlib
 * Created by wangyitao on 2018/10/30.
 */
public class JsonUtil {

    public static String toJSON(Object object) {
        return JSON.toJSONString(object);
    }

    public static <T> T toBean(String json, Class<T> clazz) {
        return JSON.parseObject(json, clazz);
    }

    public static <T> T toBean(Map jsonMap, Class<T> classes) {
        String json = JSON.toJSONString(jsonMap);
        return JSON.parseObject(json, classes);
    }

    public static String listToJSON(List list) {
        return JSON.toJSONString(list);
    }

    public static String mapToJSON(Map map) {
        return JSON.toJSONString(map);
    }

    public static Map<String, Object> objectToMap(Object object) {
        String json = JSON.toJSONString(object);
        return JSON.parseObject(json, Map.class);
    }

    public static Map<String, Object> stringToMap(String jsonStr) {
        return JSON.parseObject(jsonStr, HashMap.class);
    }

    public static Map<String, String> toMap(String json) {
        return (Map<String, String>) JSON.parse(json);
    }

    public static String replaceAtrribute(String json, String attr, String value) {
        JSONObject jsonObject = JSON.parseObject(json);
        if (jsonObject != null) {
            jsonObject.put(attr, value);
        }
        return jsonObject.toString();
    }

    public static String getAttributFromJson(String json, String attr) {
        JSONObject jsonObject = JSON.parseObject(json);
        return jsonObject.getString(attr);
    }

    public static List toList(String json, Class classes) {
        return JSON.parseArray(json, classes);
    }

}
